늬ì¡íž ëìì± ëªšëì íµì¬ìž ì€ëš ê°ë¥í ë ëë§ì ì¬ìžµ ë¶ìíì¬, ë³µì¡í ì í늬ìŒìŽì ìì ì¬ì©ì 겜íì í¥ììí€ë ë°©ë²ì ììëŽ ëë€.
늬ì¡íž ëìì± ëªšë: í¥ìë ì¬ì©ì 겜íì ìí ì€ëš ê°ë¥í ë ëë§ ì¬ìžµ ë¶ì
늬ì¡íž ëìì± ëªšëë 늬ì¡íž ì í늬ìŒìŽì ì ë ëë§ ë°©ìì ì€ëí ë³í륌 ê°ì žììŒë©°, ì€ëš ê°ë¥í ë ëë§ìŽëŒë ê°ë ì ëì íìµëë€. ìŽë 늬ì¡ížê° ì ë°ìŽížë¥Œ ì²ëЬíë ë°©ìì 귌볞ì ìŒë¡ ë°êŸžìŽ, ꞎêží ìì ì ì°ì ì²ëЬíê³ ë¬Žê±°ìŽ ë¶í ìììë ì¬ì©ì ìží°íìŽì€ì ë°ìì±ì ì ì§í ì ìê² íŽì€ëë€. ìŽ ëžë¡ê·ž ê²ì묌ììë ëìì± ëªšëì íµì¬ ìì¹, 구í ìžë¶ ì¬í, ê·žëŠ¬ê³ êžë¡ë² ì¬ì©ì륌 ìí ê³ ì±ë¥ ì¹ ì í늬ìŒìŽì 구ì¶ì ììŽ ì€ì§ì ìž ìŽì ë€ì ì¬ë ìê² ë€ë£° ê²ì ëë€.
ëìì± ëªšëì íìì± ìŽíŽíêž°
ì íµì ìŒë¡ 늬ì¡ížë íì¬ ë ê±°ì 몚ë ëë ëžë¡í¹ 몚ëëŒê³ ë¶ëЬë ë°©ììŒë¡ ìëíìµëë€. ìŽ ëªšëììë 늬ì¡ížê° ì ë°ìŽíž ë ëë§ì ììí멎 ë ëë§ìŽ ìë£ë ëê¹ì§ ëêž°ì ìŒë¡, ì€ëš ììŽ ì§íë©ëë€. ìŽë í¹í ë³µì¡í 컎í¬ëížë ëê·ëªš ë°ìŽí°ì ì ë€ë£° ë ì±ë¥ 묞ì 륌 ìŒìŒí¬ ì ììµëë€. ꞎ ëêž°ì ë ëë§ ëì ëžëŒì°ì ë ìëµíì§ ìê² ëìŽ, ì¬ì©ìë ì§ì°ì ëëŒê³ ì¢ì§ ìì ì¬ì©ì 겜íì íê² ë©ëë€. ì륌 ë€ìŽ, ì ììê±°ë ì¹ì¬ìŽížìì ì¬ì©ìê° ìíì íí°ë§íë €ê³ í ëë§ë€ ëì ëë ì§ì°ì 겪ëë€ê³ ììíŽë³Žììì€. ìŽë ë§€ì° ëµëµí ì ììŒë©° ì¬ì©ìê° ì¬ìŽížë¥Œ ìŽííê² ë§ë€ ì ììµëë€.
ëìì± ëªšëë ë ëë§ ìì ì ë ìê³ ì€ëš ê°ë¥í ëšìë¡ ë¶í íì¬ ìŽë¬í íê³ë¥Œ íŽê²°í©ëë€. ìŽë¥Œ íµíŽ ëŠ¬ì¡ížë ì°ì ììì ë°ëŒ ë ëë§ ìì ì ìŒì ì€ì§, ì¬ê° ëë í¬êž°í ì ììµëë€. ì¬ì©ì ì ë ¥ê³Œ ê°ì ëì ì°ì ììì ì ë°ìŽížê° ì§í ì€ìž ë®ì ì°ì ììì ë ëë§ì ì€ëšìí¬ ì ììŽ, ë¶ëëœê³ ë°ìì± ì¢ì ì¬ì©ì 겜íì 볎ì¥í©ëë€.
ëìì± ëªšëì íµì¬ ê°ë
1. ì€ëš ê°ë¥í ë ëë§
ëìì± ëªšëì íµì¬ ìì¹ì ë ëë§ì ì€ëší ì ìë ë¥ë ¥ì ëë€. ë©ìž ì€ë ë륌 ì°šëšíë ëì , 늬ì¡ížë ì¬ì©ì ì ë ¥ì ìëµíë ë± ë ꞎêží ìì ì ì²ëЬíêž° ìíŽ ì»Ží¬ëíž ížëЬì ë ëë§ì ìŒì ì€ì§í ì ììµëë€. ìŽë íë ¥ì ì€ìŒì€ë§ìŽëŒë êž°ì ì íµíŽ ë¬ì±ë©ëë€. 늬ì¡ížë ìŒì ëì ìì í ëžëŒì°ì ì ì ìŽê¶ì ë겚죌ìŽ, ëžëŒì°ì ê° ë€ë¥ž ìŽë²€ížë¥Œ ì²ëЬí ì ìëë¡ í©ëë€.
2. ì°ì ìì
늬ì¡ížë ë€ìí ì íì ì ë°ìŽížì ì°ì ìì륌 í ë¹í©ëë€. íìŽíìŽë íŽëŠê³Œ ê°ì ì¬ì©ì ìížìì©ì ìŒë°ì ìŒë¡ 백귞ëŒìŽë ì ë°ìŽížë ë ì€ìí UI ë³ê²œë³Žë€ ëì ì°ì ìì륌 ê°ìµëë€. ìŽë ê°ì¥ ì€ìí ì ë°ìŽížê° 뚌ì ì²ëЬëëë¡ íì¬ ë ë°ìì± ì¢ì ì¬ì©ì 겜íì ì ê³µí©ëë€. ì륌 ë€ìŽ, ê²ìì°œì ì ë ¥íë ê²ì ë€ë¥ž 백귞ëŒìŽë íë¡ìžì€ê° ìí 칎íë¡ê·žë¥Œ ì ë°ìŽížíê³ ìëëŒë íì ìŠê°ì ìŒë¡ ëê»Žì žìŒ í©ëë€.
3. íìŽë² ìí€í ì²
ëìì± ëªšëë 늬ì¡ížì ëŽë¶ ìí€í ì²ë¥Œ ìì í ì¬ìì±í 늬ì¡íž íìŽë²(Fiber) ìì 구ì¶ëììµëë€. íìŽë²ë ê° ì»Ží¬ëížë¥Œ íìŽë² ë žëë¡ íííì¬, 늬ì¡ížê° 컎í¬ëíž ì ë°ìŽížì íìí ìì ì ì¶ì íê³ ê·žì ë°ëŒ ì°ì ìì륌 ì í ì ìëë¡ í©ëë€. íìŽë²ë 늬ì¡ížê° ëê·ëªš ì ë°ìŽížë¥Œ ë ìì ìì ëšìë¡ ë¶í í ì ìê² íì¬ ì€ëš ê°ë¥í ë ëë§ì ê°ë¥íê² í©ëë€. íìŽë²ë¥Œ 늬ì¡ížë¥Œ ìí ììží ìì êŽëЬìë¡ ìê°í멎 ëë©°, ìŽë¥Œ íµíŽ ë€ìí ë ëë§ ìì ì íšìšì ìŒë¡ ì€ìŒì€ë§íê³ ì°ì ìì륌 ì í ì ììµëë€.
4. ë¹ëêž° ë ëë§
ëìì± ëªšëë ë¹ëêž° ë ëë§ êž°ì ì ëì í©ëë€. 늬ì¡ížë ì ë°ìŽíž ë ëë§ì ììí í ë€ë¥ž ìì ì ìííêž° ìíŽ ìŒì ì€ì§í ì ììµëë€. ëžëŒì°ì ê° ì íŽ ìíìŒ ë, 늬ì¡ížë ì€ëšíë ì§ì ë¶í° ë ëë§ì ì¬ê°í ì ììµëë€. ìŽë¥Œ íµíŽ ëŠ¬ì¡ížë ì íŽ ìê°ì íšê³Œì ìŒë¡ íì©íì¬ ì ë°ì ìž ì±ë¥ì í¥ììí¬ ì ììµëë€. ì륌 ë€ìŽ, ì¬ì©ìê° íì¬ íìŽì§ì ìížìì©íë ëì 늬ì¡ížë ë€ì€ íìŽì§ ì í늬ìŒìŽì ì ë€ì íìŽì§ë¥Œ 믞늬 ë ëë§íì¬ ìíí íì 겜íì ì ê³µí ì ììµëë€.
5. ìì€íì€(Suspense)
ìì€íì€ë ë°ìŽí° ê°ì žì€êž°ì ê°ì ë¹ëêž° ìì ìŽ ìë£ëꞰ륌 êž°ë€ëЬë ëì ë ëë§ì "ìŒì ì€ëš"í ì ìê² íŽì£Œë ëŽì¥ 컎í¬ëížì ëë€. ë¹ í멎ìŽë ì€íŒë륌 íìíë ëì , ìì€íì€ë ë°ìŽí°ê° ë¡ëëë ëì ë첎 UI륌 íìí ì ììµëë€. ìŽë ìê°ì íŒëë°±ì ì ê³µíê³ UIê° ìëµíì§ ìë ê²ì²ëŒ ë껎ì§ë ê²ì ë°©ì§íì¬ ì¬ì©ì 겜íì í¥ììíµëë€. ìì 믞ëìŽ íŒë륌 ììíŽë³Žììì€. ìì€íì€ë ìë²ìì ì€ì ìœí ìž ë¥Œ ê°ì žì€ë ëì ê° ê²ì묌ì ëí íë ìŽì€íë륌 íìí ì ììµëë€.
6. ížëì§ì (Transitions)
ížëì§ì ì ì¬ì©í멎 ì ë°ìŽížë¥Œ ꞎêžíì§ ìì ê²ìŒë¡ íìí ì ììµëë€. ìŽë 늬ì¡ížìê² íŽë¹ ížëì§ì ë³Žë€ ì¬ì©ì ì ë ¥ê³Œ ê°ì ë€ë¥ž ì ë°ìŽížë¥Œ ì°ì ì²ëЬíëë¡ ì§ìí©ëë€. ížëì§ì ì ë°ìì±ì í¬ìíì§ ììŒë©Žì ë¶ëëœê³ ìê°ì ìŒë¡ ë§€ë ¥ì ìž ì í íšê³Œë¥Œ ë§ëë ë° ì ì©í©ëë€. ì륌 ë€ìŽ, ì¹ ì í늬ìŒìŽì ìì íìŽì§ ê° ìŽë ì, íìŽì§ ì íì ížëì§ì ìŒë¡ íìíì¬ ëŠ¬ì¡ížê° ì íìŽì§ììì ì¬ì©ì ìížìì©ì ì°ì ì²ëЬíëë¡ í ì ììµëë€.
ëìì± ëªšë ì¬ì©ì ìŽì
- í¥ìë ë°ìì±: 늬ì¡ížê° ë ëë§ì ì€ëšíê³ êžŽêží ìì ì ì°ì ì²ëЬí ì ìê² íšìŒë¡ìš, ëìì± ëªšëë í¹í ë¬Žê±°ìŽ ë¶í ìí©ìì ì í늬ìŒìŽì ì ë°ìì±ì í¬ê² í¥ììíµëë€. ìŽë ë ë¶ëëœê³ ìŠê±°ìŽ ì¬ì©ì 겜íìŒë¡ ìŽìŽì§ëë€.
- í¥ìë ì¬ì©ì 겜í: ìì€íì€ì ížëì§ì ì ì¬ì©í멎 ìê°ì ìŒë¡ ë ë§€ë ¥ì ìŽê³ ì¬ì©ì ì¹íì ìž ìží°íìŽì€ë¥Œ ë§ë€ ì ììµëë€. ì¬ì©ìë ë¹ëêž° ìì ì ì²ëЬí ëìë ìì ì íëì ëí ìŠê°ì ìž íŒëë°±ì 볌 ì ììµëë€.
- ë ëì ì±ë¥: ëìì± ëªšëë 늬ì¡ížê° ì íŽ ìê°ì ë íšê³Œì ìŒë¡ íì©íì¬ ì ë°ì ìž ì±ë¥ì í¥ììí¬ ì ìê² í©ëë€. ëê·ëªš ì ë°ìŽížë¥Œ ë ìì ìì ëšìë¡ ë¶í íšìŒë¡ìš, 늬ì¡ížë ë©ìž ì€ë ë륌 ì°šëšíì§ ìê³ UIì ë°ìì±ì ì ì§í ì ììµëë€.
- ìœë ë¶í ë° ì§ì° ë¡ë©: ëìì± ëªšëë ìœë ë¶í ë° ì§ì° ë¡ë©ê³Œ ìííê² ìëíì¬, íì¬ ë·°ì íìí ìœëë§ ë¡ëí ì ìê² í©ëë€. ìŽë ì í늬ìŒìŽì ì ìŽêž° ë¡ë ìê°ì í¬ê² ì€ìŒ ì ììµëë€.
- ìë² ì»Ží¬ëíž(믞ë): ëìì± ëªšëë ìë² ì»Ží¬ëížë¥Œ ìí ì ì 조걎ì ëë€. ìë² ì»Ží¬ëížë ìë²ìì 컎í¬ëížë¥Œ ë ëë§í ì ìê² íŽì£Œë ìë¡ìŽ êž°ë¥ì ëë€. ìë² ì»Ží¬ëížë íŽëŒìŽìžížìì ë€ìŽë¡ëíê³ ì€ííŽìŒ íë ìë°ì€í¬ëŠœížì ìì ì€ì¬ ì±ë¥ì í¥ììí¬ ì ììµëë€.
늬ì¡íž ì í늬ìŒìŽì ì ëìì± ëªšë 구ííêž°
늬ì¡íž ì í늬ìŒìŽì ìì ëìì± ëªšë륌 íì±ííë ê²ì ë¹êµì ê°ëší©ëë€. ìŽ ê³Œì ì Create React Appì ì¬ì©íëì§ ëë ì¬ì©ì ì ì ë¹ë ì€ì ì ì¬ì©íëì§ì ë°ëŒ ë€ëŠ ëë€.
Create React App ì¬ì©íêž°
Create React Appì ì¬ì©íë 겜ì°, `index.js` íìŒì ì ë°ìŽížíì¬ `ReactDOM.render` API ëì `createRoot` API륌 ì¬ì©íšìŒë¡ìš ëìì± ëªšë륌 íì±íí ì ììµëë€.
// ìŽì :
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render( , document.getElementById('root'));
// ìŽí:
import { createRoot } from 'react-dom/client';
import App from './App';
const root = createRoot(document.getElementById('root'));
root.render( );
ì¬ì©ì ì ì ë¹ë ì€ì ì¬ì©íêž°
ì¬ì©ì ì ì ë¹ë ì€ì ì ì¬ì©íë 겜ì°, 늬ì¡íž 18 ìŽìì ì¬ì©íê³ ë¹ë 구ì±ìŽ ëìì± ëªšë륌 ì§ìíëì§ íìžíŽìŒ í©ëë€. ëí ììì 볎ì¬ì€ ê²ì²ëŒ `index.js` íìŒì ì ë°ìŽížíì¬ `createRoot` API륌 ì¬ì©íŽìŒ í©ëë€.
ë°ìŽí° ê°ì žì€êž°ë¥Œ ìí ìì€íì€ ì¬ì©íêž°
ëìì± ëªšë륌 ìµëí íì©íë €ë©Ž ë°ìŽí° ê°ì žì€êž°ì ìì€íì€ë¥Œ ì¬ì©íŽìŒ í©ëë€. ìŽë¥Œ íµíŽ ë°ìŽí°ê° ë¡ëëë ëì ë첎 UI륌 íìíì¬ UIê° ìëµíì§ ìë ê²ì²ëŒ ë껎ì§ë ê²ì ë°©ì§í ì ììµëë€.
ë€ìì ê°ìì `fetchData` íšìì íšê» ìì€íì€ë¥Œ ì¬ì©íë ììì ëë€:
import { Suspense } from 'react';
function MyComponent() {
const data = fetchData(); // Assume fetchData() returns a Promise-like object
return (
{data.title}
{data.description}
);
}
function App() {
return (
Loading... ìŽ ìì ìì `MyComponent`ë `fetchData` íšìë¡ë¶í° ë°ìŽí°ë¥Œ ìœìŒë €ê³ ìëí©ëë€. ë§ìœ ë°ìŽí°ê° ìì§ ì€ë¹ëì§ ììë€ë©Ž, 컎í¬ëížë ë ëë§ì "ìŒì ì€ëš"íê³ `Suspense` 컎í¬ëížë ë첎 UI("Loading..." í ì€íž)륌 íìí©ëë€. ë°ìŽí°ê° ì€ë¹ë멎 컎í¬ëížë ë ëë§ì ì¬ê°í©ëë€.
ꞎêžíì§ ìì ì ë°ìŽížë¥Œ ìí ížëì§ì ì¬ì©íêž°
ꞎêžíì§ ìì ì ë°ìŽížë¥Œ íìíë €ë©Ž ížëì§ì ì ì¬ì©íììì€. ìŽë¥Œ íµíŽ ëŠ¬ì¡ížë ì¬ì©ì ì ë ¥ ë° êž°í ì€ìí ìì ì ì°ì ì²ëЬí ì ììµëë€. `useTransition` í ì ì¬ì©íì¬ ížëì§ì ì ìì±í ì ììµëë€.
import { useState, useTransition } from 'react';
function MyComponent() {
const [isPending, startTransition] = useTransition();
const [value, setValue] = useState('');
const handleChange = (e) => {
startTransition(() => {
setValue(e.target.value);
});
};
return (
Value: {value}
{isPending && Updating...
}
);
}
export default MyComponent;
ìŽ ìì ìì `handleChange` íšìë `startTransition`ì ì¬ì©íì¬ `value` ìí륌 ì ë°ìŽíží©ëë€. ìŽë 늬ì¡ížìê² ìŽ ì ë°ìŽížê° ꞎêžíì§ ììŒë©° íìí ê²œì° ì°ì ìì륌 ë®ì¶ ì ììì ì늜ëë€. `isPending` ìíë ížëì§ì ìŽ íì¬ ì§í ì€ìžì§ ì¬ë¶ë¥Œ ëíë ëë€.
ì€ì©ì ìž ìì ë° ì¬ì© ì¬ë¡
ëìì± ëªšëë ë€ì곌 ê°ì í¹ì§ì ê°ì§ ì í늬ìŒìŽì ìì í¹í ì ì©í©ëë€:
- ë³µì¡í ì¬ì©ì ìží°íìŽì€: ìížìì© ììê° ë§ê³ ì ë°ìŽížê° ìŠì ì í늬ìŒìŽì ì ëìì± ëªšëì í¥ìë ë°ìì±ìŒë¡ë¶í° ìŽì ì ì»ì ì ììµëë€.
- ë°ìŽí° ì§ìœì ìž ìì : ëëì ë°ìŽí°ë¥Œ ê°ì žì€ê±°ë ë³µì¡í ê³ì°ì ìííë ì í늬ìŒìŽì ì ìì€íì€ì ížëì§ì ì ì¬ì©íì¬ ë ë¶ëë¬ìŽ ì¬ì©ì 겜íì ì ê³µí ì ììµëë€.
- ì€ìê° ì ë°ìŽíž: ì±í ì í늬ìŒìŽì ìŽë 죌ì ììž íìêž°ì²ëŒ ì€ìê° ì ë°ìŽížê° íìí ì í늬ìŒìŽì ì ëìì± ëªšë륌 ì¬ì©íì¬ ì ë°ìŽížê° ì ìíê² íìëëë¡ í ì ììµëë€.
ìì 1: ì ììê±°ë ìí íí°ë§
ìì² ê°ì ìíìŽ ìë ì ììê±°ë ì¹ì¬ìŽížë¥Œ ììíŽë³Žììì€. ì¬ì©ìê° íí°(ì: ê°ê²© ë²ì, ëžëë, ìì)륌 ì ì©í멎 ì í늬ìŒìŽì ì ìí 목ë¡ì ë€ì ë ëë§íŽìŒ í©ëë€. ë ê±°ì 몚ëììë ìŽë¡ ìžíŽ ëì ëë ì§ì°ìŽ ë°ìí ì ììµëë€. ëìì± ëªšë륌 ì¬ì©í멎 íí°ë§ ìì ì ížëì§ì ìŒë¡ íìíì¬ ëŠ¬ì¡ížê° ì¬ì©ì ì ë ¥ì ì°ì ì²ëЬíê³ UIì ë°ìì±ì ì ì§í ì ììµëë€. íí°ë§ë ìíìŽ ìë²ìì ë¡ëëë ëì ë¡ë© íìꞰ륌 볎ì¬ì£Œêž° ìíŽ ìì€íì€ë¥Œ ì¬ì©í ì ììµëë€.
ìì 2: ìížìì©í ë°ìŽí° ìê°í
ìì² ê°ì ë°ìŽí° í¬ìžížê° ìë ë³µì¡í ì°šížë¥Œ íìíë ë°ìŽí° ìê°í ì í늬ìŒìŽì ì ìê°íŽë³Žììì€. ì¬ì©ìê° ì°šížë¥Œ íë/ì¶ìíê±°ë ìŽëí ë, ì í늬ìŒìŽì ì ì ë°ìŽížë ë°ìŽí°ë¡ ì°šížë¥Œ ë€ì ë ëë§íŽìŒ í©ëë€. ëìì± ëªšë륌 ì¬ì©í멎 íë/ì¶ì ë° ìŽë ìì ì ížëì§ì ìŒë¡ íìíì¬ ëŠ¬ì¡ížê° ì¬ì©ì ì ë ¥ì ì°ì ì²ëЬíê³ ë¶ëëœê³ ìížìì©ì ìž ê²œíì ì ê³µí ì ììµëë€. ì°šížê° ë€ì ë ëë§ëë ëì íë ìŽì€íë륌 íìíêž° ìíŽ ìì€íì€ë¥Œ ì¬ì©í ì ììµëë€.
ìì 3: íì 묞ì ížì§
íì 묞ì ížì§ ì í늬ìŒìŽì ììë ì¬ë¬ ì¬ì©ìê° ëìì ëìŒí 묞ì륌 ížì§í ì ììµëë€. 몚ë ì¬ì©ìê° ìµì ë³ê²œ ì¬íì 볌 ì ìëë¡ ì€ìê° ì ë°ìŽížê° íìí©ëë€. ëìì± ëªšë륌 ì¬ì©í멎 ì ë°ìŽížì ꞎêžì±ì ë°ëŒ ì°ì ìì륌 ì í ì ììŽ, ì¬ì©ì ì ë ¥ìŽ íì ë°ìì±ì ì ì§íê³ ë€ë¥ž ì ë°ìŽížê° ì ìíê² íìëëë¡ ë³Žì¥í©ëë€. 묞ìì ë€ë¥ž ë²ì ê° ì íì ë¶ëëœê² ë§ë€êž° ìíŽ ížëì§ì ì ì¬ì©í ì ììµëë€.
ìŒë°ì ìž ê³Œì ì íŽê²°ì±
1. Ʞ졎 ëŒìŽëžë¬ëЬìì ížíì±
ìŒë¶ Ʞ졎 늬ì¡íž ëŒìŽëžë¬ëЬë ëìì± ëªšëì ì벜íê² ížíëì§ ìì ì ììµëë€. ìŽë¡ ìžíŽ ìêž°ì¹ ìì ëììŽë ì€ë¥ê° ë°ìí ì ììµëë€. ìŽ ë¬žì 륌 íŽê²°íë €ë©Ž ëìì± ëªšë륌 ìíŽ í¹ë³í ì€ê³ëìê±°ë ìŽë¥Œ ì§ìíëë¡ ì ë°ìŽížë ëŒìŽëžë¬ëŠ¬ë¥Œ ì¬ì©íŽìŒ í©ëë€. ëí `useDeferredValue` í ì ì¬ì©íì¬ ì ì§ì ìŒë¡ ëìì± ëªšëë¡ ì íí ìë ììµëë€.
2. ëë²ê¹ ë° íë¡íìŒë§
ëìì± ëªšë ì í늬ìŒìŽì ì ëë²ê¹ íê³ íë¡íìŒë§íë ê²ì ë ê±°ì 몚ë ì í늬ìŒìŽì ë³Žë€ ë ìŽë €ìž ì ììµëë€. ìŽë ëìì± ëªšëê° ì€ëš ê°ë¥í ë ëë§ ë° ì°ì ììì ê°ì ìë¡ìŽ ê°ë ì ëì íêž° ë묞ì ëë€. ìŽ ë¬žì 륌 íŽê²°íë €ë©Ž 늬ì¡íž ê°ë°ì ë구 íë¡íìŒë¬ë¥Œ ì¬ì©íì¬ ì í늬ìŒìŽì ì ì±ë¥ì ë¶ìíê³ ì ì¬ì ìž ë³ëª© íìì ìë³í ì ììµëë€.
3. ë°ìŽí° ê°ì žì€êž° ì ëµ
íšê³Œì ìž ë°ìŽí° ê°ì žì€êž°ë ëìì± ëªšëìì ìµì ì ì±ë¥ì ìíŽ ë§€ì° ì€ìí©ëë€. ìì€íì€ë¥Œ ì¬ì©íì§ ìê³ ì»Ží¬ëíž ëŽìì ì§ì ë°ìŽí°ë¥Œ ê°ì žì€ë ê²ì íŒíììì€. ëì , ê°ë¥í ëë§ë€ ë°ìŽí°ë¥Œ 믞늬 ê°ì žì€ê³ ìì€íì€ë¥Œ ì¬ì©íì¬ ë¡ë© ìí륌 ì°ìíê² ì²ëЬíììì€. SWRìŽë 늬ì¡íž 쿌늬(React Query)ì ê°ìŽ ìì€íì€ì ìííê² ìëíëë¡ ì€ê³ë ëŒìŽëžë¬ëŠ¬ë¥Œ ì¬ì©íë ê²ì ê³ ë €íììì€.
4. ìêž°ì¹ ìì 늬ë ëë§
ëìì± ëªšëì ì€ëš ê°ë¥í í¹ì± ë묞ì 컎í¬ëížê° ë ê±°ì 몚ëììë³Žë€ ë ì죌 늬ë ëë§ë ì ììµëë€. ìŽë ì¢ ì¢ ë°ìì±ì ìŽë¡ì§ë§, ì ì€íê² ì²ëЬíì§ ììŒë©Ž ëëë¡ ì±ë¥ 묞ì 륌 ìŒìŒí¬ ì ììµëë€. ë¶íìí 늬ë ëë§ì ë°©ì§íêž° ìíŽ ë©ëªšìŽì ìŽì êž°ì (ì: `React.memo`, `useMemo`, `useCallback`)ì ì¬ì©íììì€.
ëìì± ëªšë륌 ìí ëªšë² ì¬ë¡
- ë°ìŽí° ê°ì žì€êž°ìë ìì€íì€ ì¬ì©: ë°ìŽí°ë¥Œ ê°ì žì¬ ë ë¡ë© ìí륌 ì²ëЬíêž° ìíŽ íì ìì€íì€ë¥Œ ì¬ì©íììì€. ìŽë ë ëì ì¬ì©ì 겜íì ì ê³µíê³ ëŠ¬ì¡ížê° ë€ë¥ž ìì ì ì°ì ì²ëЬí ì ìê² í©ëë€.
- ꞎêžíì§ ìì ì ë°ìŽížìë ížëì§ì ì¬ì©: ꞎêžíì§ ìì ì ë°ìŽížë¥Œ íìíêž° ìíŽ ížëì§ì ì ì¬ì©íììì€. ìŽë 늬ì¡ížê° ì¬ì©ì ì ë ¥ ë° êž°í ì€ìí ìì ì ì°ì ì²ëЬí ì ìê² í©ëë€.
- 컎í¬ëíž ë©ëªšìŽì ìŽì : ë¶íìí 늬ë ëë§ì ë°©ì§íêž° ìíŽ ë©ëªšìŽì ìŽì êž°ì ì ì¬ì©íììì€. ìŽë ì±ë¥ì í¥ììí€ê³ 늬ì¡ížê° ìííŽìŒ í ìì ì ìì ì€ìŒ ì ììµëë€.
- ì í늬ìŒìŽì íë¡íìŒë§: 늬ì¡íž ê°ë°ì ë구 íë¡íìŒë¬ë¥Œ ì¬ì©íì¬ ì í늬ìŒìŽì ì ì±ë¥ì ë¶ìíê³ ì ì¬ì ìž ë³ëª© íìì ìë³íììì€.
- ì² ì í í ì€íž: ì í늬ìŒìŽì ìŽ ëìì± ëªšëìì ì¬ë°ë¥Žê² ìëíëì§ íìžíêž° ìíŽ ì² ì í í ì€ížíììì€.
- ì ì§ì ìž ëìì± ëªšë ëì : ì 첎 ì í늬ìŒìŽì ì í ë²ì ë€ì ìì±íë €ê³ íì§ ë§ììì€. ëì , ìê³ ê²©ëŠ¬ë 컎í¬ëížë¶í° ììíì¬ ì ì§ì ìŒë¡ ëìì± ëªšë륌 ëì íììì€.
늬ì¡ížì ëìì± ëªšëì 믞ë
ëìì± ëªšëë ëšìí êž°ë¥ìŽ ìëëŒ ëŠ¬ì¡ížê° ìëíë ë°©ìì 귌볞ì ìž ë³íì ëë€. ìŽë ìë² ì»Ží¬ëíž ë° ì€íì€í¬ëа ë ëë§ê³Œ ê°ì 믞ëì 늬ì¡íž êž°ë¥ì ìí êž°ë°ì ëë€. 늬ì¡ížê° ê³ì ì§ííšì ë°ëŒ, ëìì± ëªšëë ê³ ì±ë¥ì ì¬ì©ì ì¹íì ìž ì¹ ì í늬ìŒìŽì ì 구ì¶íë ë° ì ì ë ì€ìíŽì§ ê²ì ëë€.
í¹í ìë² ì»Ží¬ëížë ìì²ë ê°ë¥ì±ì ê°ì§ê³ ììµëë€. ìŽë¥Œ íµíŽ ìë²ìì 컎í¬ëížë¥Œ ë ëë§íì¬ íŽëŒìŽìžížìì ë€ìŽë¡ëíê³ ì€ííŽìŒ íë ìë°ì€í¬ëŠœížì ìì ì€ìŒ ì ììµëë€. ìŽë ì í늬ìŒìŽì ì ìŽêž° ë¡ë ìê°ì í¬ê² ê°ì íê³ ì ë°ì ìž ì±ë¥ì í¥ììí¬ ì ììµëë€.
ì€íì€í¬ëа ë ëë§ì ì¬ì©í멎 íì¬ í멎ì 볎ìŽì§ ìë 컎í¬ëížë¥Œ 믞늬 ë ëë§í ì ììµëë€. ìŽë ì í늬ìŒìŽì ìŽ ë ë°ìì ìŒë¡ ë껎ì§ê² íì¬ ì²Žê° ì±ë¥ì í¥ììí¬ ì ììµëë€.
ê²°ë¡
늬ì¡íž ëìì± ëªšëë ê³ ì±ë¥ì ë°ìí ì¹ ì í늬ìŒìŽì ì 구ì¶íêž° ìí ê°ë ¥í ë구ì ëë€. ëìì± ëªšëì íµì¬ ìì¹ì ìŽíŽíê³ ëªšë² ì¬ë¡ë¥Œ ë°ë¥Žë©Ž, ì í늬ìŒìŽì ì ì¬ì©ì 겜íì í¬ê² í¥ììí€ê³ 믞ëì 늬ì¡íž ê°ë°ì ëë¹í ì ììµëë€. ê³ ë €íŽìŒ í 곌ì ë€ìŽ ìì§ë§, í¥ìë ë°ìì±, ê°íë ì¬ì©ì 겜í, ê·žëŠ¬ê³ ë ëì ì±ë¥ìŽëŒë ìŽì ë€ì ëìì± ëªšë륌 몚ë 늬ì¡íž ê°ë°ììê² ê°ì¹ ìë ìì°ìŒë¡ ë§ëëë€. ì€ëš ê°ë¥í ë ëë§ì íì ë°ìë€ìŽê³ , êžë¡ë² ì¬ì©ì륌 ìíŽ ëŠ¬ì¡íž ì í늬ìŒìŽì ì ì ì¬ë ¥ì ìµëí ë°ííììì€.